package com.test.udp.talk;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * UDP协议发送方(实现多次接收)
 * 1.使用DatagramSocket 指定端口,创建发送端(注意端口不要被占用)
 * 2.准备数据,一定要转成字节数据
 * 3.封装成DatagramPacket包裹,需要指定目的地(目标IP及端口号)
 * 4.发送包裹send(DatagramPacket p)
 * 5.释放资源
 *
 * @author: ybl
 * @create: 2019-05-27 22:38
 **/
public class UDPTalkClient {
    public static void main(String[] args) throws Exception {
        System.out.println("发送方启动中....");

        //1.使用DatagramSocket 指定端口,创建发送端(注意端口不要被占用)
        DatagramSocket client = new DatagramSocket(8888);
        //2.准备数据,一定要转成字节数据

        //使用循环来连续发送
        while (true) {
            //使用控制台来获取手动输入的内容
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

            String data = reader.readLine();
            byte[] datas = data.getBytes();
            //3.封装成DatagramPacket包裹,需要指定目的地(目标IP及端口号),注意地址要使用一个地址对象InetSocketAddress
            DatagramPacket packet = new DatagramPacket(datas, 0, datas.length,
                    new InetSocketAddress("localhost", 9999));

            //跳出循环
            if (data.equals("bye")) {
                break;
            }

            //4.发送包裹send(DatagramPacket p)
            reader.close();
            client.send(packet);
        }
        //5.释放资源
        client.close();
    }
}
